﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BusinessObject;
using YamahaTuanTruc.AuthenticationService;
using Qios.DevSuite.Components;

namespace YamahaTuanTruc
{
    public partial class FrmChangePassword : Qios.DevSuite.Components.Ribbon.QRibbonForm
    {
        //private FrmLogin logininfo;
        public FrmChangePassword()
        {
            InitializeComponent();
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnChangePasswd_Click(object sender, EventArgs e)
        {
            txtcurPasswd_Leave(null, null);
            txtNewPasswd_Leave(null, null);
            txtConfirmNewPasswd_Leave(null, null);

            if (string.IsNullOrEmpty(errorProvider.GetError(txtcurPasswd)) &&
                string.IsNullOrEmpty(errorProvider.GetError(txtNewPasswd)) &&
                string.IsNullOrEmpty(errorProvider.GetError(txtConfirmNewPasswd)))
            {
                if (txtNewPasswd.Text != txtConfirmNewPasswd.Text)
                {
                    errorProvider.SetError(txtNewPasswd, "Mật khẩu mới không giống nhau.");
                    
                }
                else
                {
                    ChangePasswd(Program.User.Username, txtcurPasswd.Text, txtNewPasswd.Text);
                }
            }
        }
        public void ChangePasswd(String username, String curPasswd, String newPasswd)
        {
            int id = CheckPasswd(username, curPasswd);
            if (id != -1)
            {
                UpdatePasswd(id, newPasswd);
            }
            else
            {
                errorProvider.SetError(txtcurPasswd, "Mật khẩu hiện tại không đúng.");
            }
        }
        public int CheckPasswd(String username, String passwd)
        {
            int id = -1;
            using (var service = new AuthenticationServiceClient())
            {
                id = service.CheckPasswd(username, passwd);
                return id;
            }
        }
        public void UpdatePasswd(int id, String newpass)
        {
            using (var service = new AuthenticationServiceClient())
            {
                bool res = service.UpdatePasswd(id, newpass);
                if (res)
                {
                    MessageBox.Show("Đổi mật khẩu thành công.");
                }
                else
                {
                    MessageBox.Show("Đổi mật khẩu thất bại. Đã có lỗi xảy ra. Xin vui lòng thử lại.");
                }
            }
            
            
        }
        private void txtcurPasswd_Leave(object sender, EventArgs e)
        {
            errorProvider.SetError(txtcurPasswd, null);
            if (string.IsNullOrEmpty(txtcurPasswd.Text))
            {
                errorProvider.SetError(txtcurPasswd, "Bạn chưa điền mật khẩu hiện tại.");
            }
        }

        private void txtNewPasswd_Leave(object sender, EventArgs e)
        {
            errorProvider.SetError(txtNewPasswd, null);
            if (string.IsNullOrEmpty(txtNewPasswd.Text))
            {
                errorProvider.SetError(txtNewPasswd, "Bạn chưa điền mật khẩu mới.");
            }
        }

        private void txtConfirmNewPasswd_Leave(object sender, EventArgs e)
        {
            errorProvider.SetError(txtConfirmNewPasswd, null);
            if (string.IsNullOrEmpty(txtConfirmNewPasswd.Text))
            {
                errorProvider.SetError(txtConfirmNewPasswd, "Bạn phải nhập mật khẩu mới thêm một lần nữa.");
            }
        }

        private void FrmChangePassword_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnChangePasswd_Click(sender, e);
            }
            else if (e.KeyCode == Keys.Escape)
            {
                btnExit_Click(sender, e);
            }
        }

        private void txtcurPasswd_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnChangePasswd_Click(sender, e);
            }
            else if (e.KeyCode == Keys.Escape)
            {
                btnExit_Click(sender, e);
            }
        }

        private void txtNewPasswd_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnChangePasswd_Click(sender, e);
            }
            else if (e.KeyCode == Keys.Escape)
            {
                btnExit_Click(sender, e);
            }
        }

        private void txtConfirmNewPasswd_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnChangePasswd_Click(sender, e);
            }
            else if (e.KeyCode == Keys.Escape)
            {
                btnExit_Click(sender, e);
            }
        }
    }
}